// 基本思想：数组是有序的，重复的元素一定会相邻，删除重复元素，就是把不重复的元素移到数组左侧，首先定义两个快慢指针，slow指向去重重复元素后的末尾位置，fast指向当前元素，比较slow位置上和fast位置上元素是否相等
// 如果不相等，则将slow后移一位，将fast指向位置的元素复制到slow位置上
// fast右移一位
// 重复步骤，直到fast等于数组长度

// 时间复杂度：O(n)
// 空间复杂度：O(1)

function removeDuplicates(arr) {
    if (arr.length <= 1) {
        return arr.length
    }
    let slow = 0
    let fast = 1
    while (fast < arr.length) {
        if (arr[slow] !== arr[fast]) {
            slow += 1
            arr[slow] = arr[fast]
        }
        fast += 1
    }
    return slow + 1
}

let arr = [1, 2, 3, 3, 4, 4, 5]
console.log(removeDuplicates(arr))
console.log(arr)